`
https://leetcode.cn/problems/partition-labels/
`

/**
 * @param {string} s
 * @return {number[]}
 */
var partitionLabels = function (s) {
  const last = new Array(26).fill(0)
  // 获取每个字符最后出现的位置
  for (let i = 0; i < s.length; i++) {
    last[s.charCodeAt(i) - 'a'.charCodeAt(0)] = i
  }
  const partition = []
  let start = 0, end = 0;
  // 遍历字符串，确定每个分区的结束位置
  for (let i = 0; i < s.length; i++) {
    // 更新当前分区的结束位置
    end = Math.max(end, last[s.charCodeAt(i) - 'a'.charCodeAt(0)])
    // 如果当前索引等于分区的结束位置，说明可以切分
    if (i === end) {
      partition.push(end - start + 1)
      start = end + 1
    }
  }
  return partition
};